GitHub Actions自动部署vite项目时使用多个环境变量
为什么要用环境变量
在项目中配置秘钥时,为避免将秘钥公开上传到代码仓库,可以使用 .env 文件存储秘钥,然后在 .gitignore 中添加 .env ,防止上传秘钥。
注意:这种方法只能防止查看工程文件的人看到秘钥,如果部署在GitHub Pages上,他人仍能在静态文件中找到秘钥。
.env文件的使用
VITE_apiKey001 = "***"
VITE_apiKey002 = "***"
VITE_apiKey003 = "***"
// 在 vite 项目中调用
const config = {
apiKey001: import.meta.env.VITE_apiKey001,
apiKey002: import.meta.env.VITE_apiKey002,
apiKey003: import.meta.env.VITE_apiKey003,
};
GitHub Actions 和 Secrets 配置
设置 GitHub Token
- 在GitHub账号设置中找到developer settings
- 找到Tokens(classic),选择generate new token
- 选择classic,权限范围至少包括repo和workflow
- 添加备注并复制token内容
在项目中配置Secret
- 进入项目代码仓库的settings
- 左侧菜单找到Secrets and Variables
- 进入Actions页面,新增repository secrets
- 给秘钥起名(通常为API_TOKEN_GITHUB)并粘贴token内容
- 在workflows流程文件中使用 ${{ secrets.API_TOKEN_GITHUB }} 引用秘钥
在workflow中配置环境变量
项目文件无法直接访问workflow文件中的变量,需要创建项目文件可访问的环境变量。有三种方法:
1. 在env属性中明文写出秘钥(不推荐)
jobs:
my_job:
env:
VITE_apiKey001: "***"
VITE_apiKey002: "***"
VITE_apiKey003: "***"
缺点:如果代码仓库是公开的,他人可以看到workflow文件内容,秘钥就不再安全。
2. 在env属性中逐个引用secrets(较麻烦)
jobs:
my_job:
env:
VITE_apiKey001: ${{ secrets.VITE_apiKey001 }}
VITE_apiKey002: ${{ secrets.VITE_apiKey002 }}
VITE_apiKey003: ${{ secrets.VITE_apiKey003 }}
缺点:当变量数量较多时,配置工作量大。
3. 使用secrets注入多个环境变量到env(推荐)
- 在代码仓库环境变量中新建一个secret变量,名称为ENV_FILE
- 变量内容输入.env文件的全部内容
- 在工作流程文件的steps中添加:
jobs:
my_job:
steps:
- name: Create .env file
run: echo "${{ secrets.ENV_FILE }}" > .env
这样会在workflow的部署环境下创建.env文件,后续步骤中工程文件就能访问到环境变量了。